ExtJS অ্যাপ্লিকেশনের জন্য Unit Testing

Web Development - এক্সটিজেএস (ExtJS) - ExtJS Unit Testing এবং Debugging |

Unit Testing হল সফটওয়্যার ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ যা প্রতিটি ছোট ইউনিট বা ফাংশনের নির্ভরযোগ্যতা পরীক্ষা করে। ExtJS অ্যাপ্লিকেশনের ক্ষেত্রে, unit testing অ্যাপ্লিকেশনটির কার্যক্ষমতা এবং কম্পোনেন্টগুলো ঠিকঠাক কাজ করছে কিনা তা নিশ্চিত করতে সহায়ক।

ExtJS এ unit testing করার জন্য সাধারণত Jasmine, QUnit, অথবা Karma ব্যবহার করা হয়, যা জাভাস্ক্রিপ্ট টেস্টিং ফ্রেমওয়ার্ক এবং রানটাইম টেস্টিং টুলস হিসেবে ব্যবহৃত হয়। ExtJS নিজে Sencha Test নামক একটি টেস্টিং টুলও প্রদান করে, যা ExtJS অ্যাপ্লিকেশনগুলির জন্য unit test, functional test, এবং integration test চালাতে সাহায্য করে।

এই গাইডে আমরা ExtJS অ্যাপ্লিকেশনের জন্য Unit Testing কিভাবে করা যায় তা আলোচনা করব, এবং বিভিন্ন টেস্টিং টুল এবং ফ্রেমওয়ার্ক নিয়ে কিছু তথ্য প্রদান করব।


১. Sencha Test

Sencha Test হল ExtJS অ্যাপ্লিকেশনের জন্য একটি টেস্টিং প্ল্যাটফর্ম যা অ্যাপ্লিকেশনের ইউআই এবং ফাংশনালিটি পরীক্ষা করার জন্য ব্যবহৃত হয়। এটি ExtJS অ্যাপ্লিকেশনগুলির জন্য unit test, functional test, integration test ইত্যাদি চালাতে সহায়ক।

Sencha Test দিয়ে Unit Testing করা

  1. Sencha Test ইনস্টল করা: প্রথমে Sencha Test টুল ইনস্টল করতে হবে।
npm install -g @sencha/command
  1. Unit Test তৈরি করা: Sencha Test এ unit test তৈরি করার জন্য, আপনাকে Test Scripts তৈরি করতে হবে যেখানে আপনি আপনার কম্পোনেন্ট এবং ফাংশনগুলোর উপর টেস্ট কেস লিখবেন।

Unit Test Example with Sencha Test:

describe("MyApp.view.MyComponent", function() {
    it("should initialize correctly", function() {
        var component = Ext.create('MyApp.view.MyComponent');
        expect(component).toBeDefined();
        expect(component.getTitle()).toBe("Expected Title");
    });

    it("should call the handler function when button is clicked", function() {
        var component = Ext.create('MyApp.view.MyComponent');
        var button = component.down('button');
        spyOn(component, 'onButtonClick');
        button.fireEvent('click');
        expect(component.onButtonClick).toHaveBeenCalled();
    });
});

এখানে:

  • describe ব্লকের মধ্যে পরীক্ষার উদ্দেশ্য এবং উপাদানটি দেওয়া হয়।
  • it ব্লকে টেস্ট কেস দেয়া হয়, যা পরীক্ষা করবে কম্পোনেন্ট বা ফাংশন ঠিকমতো কাজ করছে কিনা।
  • spyOn ব্যবহার করে কোনো ফাংশনের কল ট্র্যাক করা হয়।

২. Jasmine Framework with ExtJS

Jasmine হল একটি পপুলার টেস্টিং ফ্রেমওয়ার্ক যা জাভাস্ক্রিপ্ট ফাংশনের unit testing করতে ব্যবহৃত হয়। ExtJS অ্যাপ্লিকেশনে Jasmine ব্যবহার করতে, প্রথমে আপনার অ্যাপ্লিকেশন এবং টেস্ট ফাইলগুলোকে কনফিগার করতে হবে।

Jasmine ইনস্টল এবং কনফিগারেশন

  1. Jasmine ইনস্টল করা:
npm install --save-dev jasmine
  1. Jasmine কনফিগারেশন করা:

spec/support/jasmine.json ফাইল তৈরি করুন এবং সেখানে নিচের কনফিগারেশন যোগ করুন:

{
  "spec_dir": "spec",
  "spec_files": [
    "spec/**/*[sS]pec.js"
  ],
  "helpers": [
    "helpers/**/*.js"
  ]
}
  1. Jasmine Test Script:
describe("MyApp.model.User", function() {
    it("should return the correct name", function() {
        var user = Ext.create('MyApp.model.User', { name: "John Doe" });
        expect(user.getName()).toBe("John Doe");
    });
});

এখানে:

  • describe: টেস্টের উদ্দেশ্য বা মডিউল বর্ণনা করে।
  • it: প্রত্যেকটি টেস্ট কেস লিখতে ব্যবহৃত হয়।
  • expect: টেস্টের ফলাফল যাচাই করতে ব্যবহৃত হয়।

৩. Karma Test Runner

Karma হল একটি টেস্ট রানার, যা আপনার জাভাস্ক্রিপ্ট টেস্টিং ফ্রেমওয়ার্ক (যেমন Jasmine) চালাতে সহায়ক। Karma ব্যবহার করে আপনি ব্রাউজারের মধ্যে টেস্ট চালাতে পারেন এবং এটি স্বয়ংক্রিয়ভাবে আপনার কোডের পরিবর্তন ট্র্যাক করে।

Karma ইনস্টল এবং কনফিগারেশন

  1. Karma ইনস্টল করা:
npm install --save-dev karma karma-jasmine karma-chrome-launcher
  1. Karma কনফিগারেশন:

karma.conf.js ফাইল তৈরি করুন এবং সেখানে কনফিগারেশন সেট করুন:

module.exports = function(config) {
    config.set({
        frameworks: ['jasmine'],
        files: [
            'app/**/*.js',
            'spec/**/*.spec.js'
        ],
        browsers: ['Chrome'],
        singleRun: true
    });
};
  1. Karma টেস্ট রান:
karma start

এখানে, Karma আপনার টেস্ট ফাইলগুলোকে চালাবে এবং Chrome ব্রাউজারে তাদের পরীক্ষা করবে।


৪. QUnit Framework

QUnit একটি জাভাস্ক্রিপ্ট টেস্টিং ফ্রেমওয়ার্ক যা ExtJS অ্যাপ্লিকেশনে ব্যবহৃত হতে পারে। এটি অ্যাপ্লিকেশনটির ইউনিট টেস্টিং করার জন্য একটি সিম্পল এবং কার্যকরী পদ্ধতি সরবরাহ করে।

QUnit ইনস্টল এবং কনফিগারেশন

  1. QUnit ইনস্টল করা:
npm install --save-dev qunit
  1. QUnit টেস্ট তৈরি করা:
QUnit.module("MyApp.model.User");

QUnit.test("Name should be correct", function(assert) {
    var user = Ext.create('MyApp.model.User', { name: 'John Doe' });
    assert.equal(user.getName(), 'John Doe', 'Name is correct');
});

QUnit Test এ:

  • QUnit.module: পরীক্ষার মডিউল তৈরি করা হয়।
  • QUnit.test: নির্দিষ্ট টেস্ট কেস তৈরি করা হয়।
  • assert.equal(): একটি ভ্যালু যাচাই করে।

৫. Unit Testing Tips and Best Practices

  • Test Coverage: আপনার অ্যাপ্লিকেশনের গুরুত্বপূর্ণ ফাংশন এবং ইউআই কম্পোনেন্টের জন্য unit tests নিশ্চিত করতে হবে।
  • Mocking and Spying: ফাংশনের নির্ভরশীল অংশগুলি mocking এবং spying এর মাধ্যমে পরীক্ষা করুন। ExtJS তে SpyOn এবং Mock ক্লাস ব্যবহার করে এটি করা সম্ভব।
  • Test Automation: Continuous Integration (CI) সিস্টেমে unit testing যোগ করতে ভুলবেন না, যাতে প্রতি কোড পরিবর্তনে স্বয়ংক্রিয়ভাবে টেস্ট চালানো যায়।
  • Write Isolated Tests: আপনার টেস্টগুলি যতটা সম্ভব আলাদা এবং স্বাধীন রাখুন, যাতে কোন ডিপেনডেন্সির প্রভাব ছাড়া একে একে পরীক্ষা করা যায়।

সারাংশ

  1. Sencha Test: ExtJS অ্যাপ্লিকেশনের জন্য একটি পূর্ণাঙ্গ টেস্টিং টুল যা unit, functional এবং integration testing চালাতে সাহায্য করে।
  2. Jasmine, QUnit, Karma: Jasmine এবং QUnit হল জনপ্রিয় জাভাস্ক্রিপ্ট টেস্টিং ফ্রেমওয়ার্ক, যা ExtJS অ্যাপ্লিকেশনের জন্য ব্যবহার করা যায়, এবং Karma টেস্ট রানার ব্যবহার করে টেস্টগুলো ব্রাউজারে চালানো যায়।
  3. Unit Testing Best Practices: টেস্ট কভারেজ নিশ্চিত করা, mocking এবং spying ব্যবহার করা, এবং continuous integration এর মাধ্যমে টেস্টিং অটোমেট করা অত্যন্ত গুরুত্বপূর্ণ।

Unit Testing এর মাধ্যমে আপনার ExtJS অ্যাপ্লিকেশন আরও নির্ভরযোগ্য এবং কার্যকরী হয়, এবং কোড রিফ্যাক্টরিং বা নতুন ফিচার অ্যাড করার সময় কোনো সমস্যা সৃষ্টি না হওয়ার সম্ভাবনা বৃদ্ধি পায়।

Content added By
Promotion